home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / csdudes.exe / CSDUDES.HPP < prev    next >
Text File  |  1992-06-25  |  9KB  |  316 lines

  1. // Personnell Demo database
  2. // (C) Copyright 1992 Campbell Soup Company by Andrew Frantz
  3. // CSDUDES.HPP
  4. //    CIS --- 70712,3547
  5. // =====================================================================
  6. #include <alloc.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <conio.h>
  10. #include <iostream.h>
  11. #include <string.h>
  12. #include <pxengine.h>
  13. #include <strstrea.h>
  14. #include <new.h>
  15.  
  16. #include "pdxtbl.hpp"
  17. // extern "C"
  18. // {
  19. //    #include <nit.h>
  20. //     #include <niterror.h>
  21. //     char *full_name(char *object_name);
  22. // }
  23. // char *userFullName();
  24. #define DATAPATH "F:\\data\\person"
  25. #define PDOXNETPATH "F:\\data\\person"
  26. // #define DATAPATH "H:\\users\\es378n\\data\\person"
  27. // #define PDOXNETPATH "H:\\users\\es378n\\data\\person"
  28. // ====================================================================
  29. #define Uses_TEventQueue
  30. #define Uses_MsgBox
  31. #define Uses_TEvent
  32. #define Uses_TProgram
  33. #define Uses_TApplication
  34. #define Uses_TKeys
  35. #define Uses_TRect
  36. #define Uses_TMenuBar
  37. #define Uses_TListBox
  38. #define Uses_TSubMenu
  39. #define Uses_TMenuItem
  40. #define Uses_TStatusLine
  41. #define Uses_TStatusItem
  42. #define Uses_TStatusDef
  43. #define Uses_TStringCollection
  44. #define Uses_TDeskTop
  45. #define Uses_TView
  46. #define Uses_TWindow
  47. // #define Uses_TFrame
  48. #define Uses_TScroller
  49. #define Uses_TScrollBar
  50. #define Uses_TDialog
  51. #define Uses_TButton
  52. #define Uses_TSItem
  53. // #define Uses_TCheckBoxes
  54. #define Uses_TRadioButtons
  55. #define Uses_TLabel
  56. #define Uses_TInputLine
  57. #define Uses_TCollection
  58.  
  59. // #define Uses_TEditor
  60. // #define Uses_TMemo
  61. #include <tv.h>
  62. // =====================================================================
  63. //                    Define the unique application messages
  64. const int cmPersonAddDialog          =    100;
  65. const int cmPersonEditDialog      =    101;
  66. const int cmCostCtrAddDialog      =    102;
  67. const int cmCostCtrEditDialog      =    103;
  68. const int cmAboutCmd                    =    104;     //  About Dialog Box
  69.  
  70. const int cmBlank                        =    200;
  71. const int cmAddRec                    =    202;
  72. const int cmFirstRec                    =    203;
  73. const int cmNextRec                    =    204;
  74. const int cmClearRec                    =    205;
  75. const int cmPrevRec                    =    206;
  76. const int cmLastRec                    =    207;
  77. const int cmChangeRec                =    208;
  78. const int cmDeleteRec                =    209;
  79. const int cmFindRec                    =    210;
  80. const int cmDisplayTheList            =    211;
  81. const int cmsTestQuit                =    212;
  82. const int cmInterView                =    213;
  83.  
  84. void testCore();
  85. // =====================================================================
  86. struct PersonXferBuffer
  87. {
  88.     char LastName[16];
  89.     char FirstName[16];
  90.     char UserName[13];
  91.     char CostCtr[4];
  92.     char Address1[26];
  93.     char Address2[26];
  94.     char City[21];
  95.     char State[3];
  96.     char Zip[11];
  97.     char Ext[5];
  98.     char HomePhone[13];
  99.     ushort Group;
  100. };
  101. // =====================================================================
  102. struct CostCtrXferBuffer
  103. {
  104.     char CostCtr[4];
  105.     char CCDescription[26];
  106.     char ManagerUserName[13];
  107. };
  108. // =====================================================================
  109. // ==========================  PXPerson Class Begins ====================
  110. class PXPerson : public pxtable
  111. {
  112. public:
  113.     PXPerson();
  114.     ~PXPerson(void) { close(); }
  115.  
  116.     PersonXferBuffer DisplayRecord();
  117.     void AddRecord(PersonXferBuffer *data);
  118.     void ChangeRecord(PersonXferBuffer *data);
  119.     int FindRecord(char *data);
  120.  
  121.     int  InitFields();
  122.  
  123. private:
  124.     CharFld LastName;
  125.     CharFld FirstName;
  126.     CharFld UserName;
  127.     CharFld Address1;
  128.     CharFld Address2;
  129.     CharFld City;
  130.     CharFld State;
  131.     CharFld Zip;
  132.     CharFld Ext;
  133.     CharFld HomePhone;
  134.     CharFld CostCtr;
  135.     ShortFld Group;
  136. };
  137. // =====================================================================
  138. class TPersonDlg : public TDialog
  139. {
  140. public:
  141.     enum types {AddDlg, EditDlg};
  142.     TPersonDlg();
  143.     TPersonDlg(const char *title, int type);
  144.  
  145. //    friend class TCCListDlg;
  146.     virtual void handleEvent( TEvent& event);
  147.     void cmListItemSelect(char *msg);
  148. //    void cmDisplayList();
  149.     void cmAdd();
  150.     void cmClear();
  151.     void cmFirst();
  152.     void cmNext();
  153.     void cmPrev();
  154.     void cmLast();
  155.     void cmChange();
  156.     void cmDelete();
  157.     void cmFind();
  158.     void cmTestQuit();
  159.     void checkDlg();
  160.     void setDlgStructs();
  161.     int integrityCheck();
  162.  
  163. private:
  164.     int DlgType;
  165.  
  166.     // Need this to transfer data from Tvision objects to database
  167.     PersonXferBuffer personXferStruct;
  168.     PersonXferBuffer tempPerson;   // used to see if screen has changed
  169. };
  170. // =====================================================================
  171. // inlines declared in the header file    Coplien idiom
  172. inline void TPersonDlg::checkDlg()
  173. {
  174.     int changed=0;
  175.  
  176.     getData((void *) &personXferStruct);
  177.  
  178.     if(strcmp(tempPerson.LastName, personXferStruct.LastName) != 0)
  179.         changed = 1;
  180.     if(strcmp(tempPerson.FirstName, personXferStruct.FirstName) != 0)
  181.         changed = 1;
  182.     if(strcmp(tempPerson.UserName, personXferStruct.UserName) != 0)
  183.         changed = 1;
  184.     if(strcmp(tempPerson.CostCtr, personXferStruct.CostCtr) != 0)
  185.         changed = 1;
  186.     if(strcmp(tempPerson.Address1, personXferStruct.Address1) != 0)
  187.         changed = 1;
  188.     if(strcmp(tempPerson.Address2, personXferStruct.Address2) != 0)
  189.         changed = 1;
  190.     if(strcmp(tempPerson.City, personXferStruct.City) != 0)
  191.         changed = 1;
  192.     if(strcmp(tempPerson.State, personXferStruct.State) != 0)
  193.         changed = 1;
  194.     if(strcmp(tempPerson.Zip, personXferStruct.Zip) != 0)
  195.         changed = 1;
  196.     if(strcmp(tempPerson.Ext, personXferStruct.Ext) != 0)
  197.         changed = 1;
  198.     if(strcmp(tempPerson.HomePhone, personXferStruct.HomePhone) != 0)
  199.         changed = 1;
  200.     if(tempPerson.Group != personXferStruct.Group)
  201.         changed = 1;
  202.  
  203.     if(changed)
  204.     {
  205.         message(owner,evBroadcast,cmsTestQuit,this);
  206.     }
  207. }
  208. // =====================================================================
  209. class TMyListBox : public TListBox
  210. {
  211. public:
  212.     TMyListBox(TRect& bounds,ushort num,TScrollBar *bar) :
  213.         TListBox(bounds,num,bar) {};
  214.     void handleEvent(TEvent&);
  215. };
  216. // =====================================================================
  217. class TCCListDlg : public TDialog
  218. {
  219. public:
  220.     TCCListDlg(TRect&,char *);
  221.     void handleEvent(TEvent&);
  222.     TMyListBox *listBox;
  223. };
  224. // ===================================================================
  225. class PXCostCtr : public pxtable
  226. {
  227. public:
  228.     PXCostCtr();
  229.     ~PXCostCtr(void) { close(); }
  230.  
  231.     CostCtrXferBuffer DisplayRecord();
  232.     void AddRecord(CostCtrXferBuffer *data);
  233.     void ChangeRecord(CostCtrXferBuffer *data);
  234.     int FindRecord(char *data);
  235.  
  236.     int  InitFields();
  237.  
  238. private:
  239. //    friend class TPersonDlg;
  240.     friend class TCCListDlg;
  241.     CharFld CostCtr;
  242.     CharFld CCDescription;
  243.     CharFld ManagerUserName;
  244. };
  245. // ====================================================================
  246. class TCostCtrDlg : public TDialog
  247. {
  248. public:
  249.     enum types {AddDlg, EditDlg};
  250.     TCostCtrDlg();
  251.     TCostCtrDlg(const char *title, int type);
  252.  
  253.     virtual void handleEvent( TEvent& event);
  254.     void cmListItemSelect();
  255. //    void cmDisplayList();
  256.     void cmAdd();
  257.     void cmClear();
  258.     void cmFirst();
  259.     void cmNext();
  260.     void cmPrev();
  261.     void cmLast();
  262.     void cmChange();
  263.     void cmDelete();
  264.     void cmFind();
  265.     void cmTestQuit();
  266.     void checkDlg();
  267.     void setDlgStructs();
  268.  
  269. private:
  270.     int DlgType;
  271.     // Need this to transfer data from Tvision objects to database
  272.     CostCtrXferBuffer costCtrXferStruct;
  273.     CostCtrXferBuffer tempCostCtr;   // used to see if screen has changed
  274. };
  275. // =====================================================================
  276. // inlines declared in the header file    Coplien idiom
  277. inline void TCostCtrDlg::checkDlg()
  278. {
  279.     int changed=0;
  280.  
  281.     getData((void *) &costCtrXferStruct);
  282.  
  283.     if(strcmp(tempCostCtr.CostCtr, costCtrXferStruct.CostCtr) != 0)
  284.         changed = 1;
  285.     if(strcmp(tempCostCtr.CCDescription, costCtrXferStruct.CCDescription) != 0)
  286.         changed = 1;
  287.     if(strcmp(tempCostCtr.ManagerUserName, costCtrXferStruct.ManagerUserName) != 0)
  288.         changed = 1;
  289.  
  290.     if(changed)
  291.     {
  292.         message(owner,evBroadcast,cmsTestQuit,this);
  293.     }
  294. }
  295. // ====================================================================
  296. class TPersonnellApp : public TApplication
  297. {
  298. public:
  299.     TPersonnellApp();
  300.     static TStatusLine *initStatusLine( TRect r );
  301.     static TMenuBar *initMenuBar( TRect r );
  302.     virtual void handleEvent( TEvent& event);
  303.     void aboutDlgBox();
  304.  
  305. // private:
  306. //    friend cla